/*
 * Copyright (C) 2012 Rothens
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
package rpg.server.net;

import java.io.IOException;

/**
 * rothens.tumblr.com
 * @author Rothens
 */
public class WriterThread extends Thread {

	final NetworkManager netmanager;

	public WriterThread(NetworkManager netmanager, String name) {
		super(name);
		this.netmanager = netmanager;
	}

	public void run() {
		synchronized (NetworkManager.threadSyncObject) {
			NetworkManager.numWriteThreads++;
		}
		try {
			while (NetworkManager.isRunning(netmanager)) {
				while (NetworkManager.sendNetworkPacket(netmanager)) ;
				try {
					if (NetworkManager.getOutputStream(netmanager) != null) {
						NetworkManager.getOutputStream(netmanager).flush();
					}
				} catch (IOException ioexception) {

					ioexception.printStackTrace();
				}
				try {
					sleep(2L);
				} catch (InterruptedException interruptedexception) {
				}
			}
		} finally {
			synchronized (NetworkManager.threadSyncObject) {
				NetworkManager.numWriteThreads--;
			}
		}
	}
}
